Git 查看日志相关命令
平时使用 Git 不只是各种提交,更多时候也需要检查当前提交日志,检查更新内容等操作
log 查看日志
Git 提交历史一般常用两个命令:
git log - 查看历史提交记录。
git blame <file> - 以列表形式查看指定文件的历史修改记录。
在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log
命令查看。
$ git log
commit 291ec4e89252852d99cc4779f64f2aae90ce946e (HEAD -> master, origin/master)
Author: alsritter <alsritter@outlook.com>
Date: Wed Mar 9 00:40:58 2022 +0800
cccc
commit 6bc4e269130aa5c8a5708e387372a9ebf28f7e0a
Author: alsritter <alsritter@outlook.com>
Date: Tue Mar 8 23:54:56 2022 +0800
cccc
commit d39c816cd59e09a5b382bdcd67526360fd83511b
Author: alsritter <alsritter@outlook.com>
Date: Tue Mar 8 00:20:47 2022 +0800
ccc
....
$
显示相关
git status # 查看状态
git log # 显示日志(最完整的形式)
多屏显示时的操作(就是页数太多了,不是那个分屏)
- 空格向下翻页
- b 向上翻页
- q 退出
git log --pretty=oneline # 日志显示为一行
git log --oneline # 日志显示为一行(但是哈希只显示部分,且如果移动了 HEAD 则只显示后面的版本不显示前面的版本)
git reflog # 效果同上,但是多了个移动步数[推荐]
# 图形的方式显示
# 说明:
# --decorate 标记会让 git log 显示每个 commit 的引用(如:分支、tag等)
# --oneline 一行显示
# --simplify-by-decoration 只显示被 branch 或 tag 引用的 commit
# --all 表示显示所有的 branch,这里也可以选择:
# 比如我指向显示分支 ABC 的关系,则将 --all 替换为branchA branchB branchC
git log --graph --decorate --oneline --simplify-by-decoration --all
或者使用 gitk 工具(自带的 GUI 工具)
gitk --simplify-by-decoration --all
oneline 选项简洁输出
可以用 --oneline
选项来查看历史记录的简洁的版本。
$ git log --oneline
291ec4e (HEAD -> master, origin/master) cccc
6bc4e26 cccc
d39c816 ccc
1e1acdc ccccccc
1937afe cccc
d331e12 ccc
1e46383 修改头图地址
47ba328 ccc
22b7c49 开始学习 Kubernetes
3f0e99e Merge branch 'master' of github.com:alsritter/TeaNotes
9eada7b ccc
bd4f9ff cccccccc
7835fdf Merge branch 'master' of github.com:alsritter/TeaNotes
cc2ce0d cccc
0058900 cc
....
$
可以加个 -数字
来设置显示多少行
$ git log --oneline -3
291ec4e (HEAD -> master, origin/master) cccc
6bc4e26 cccc
d39c816 ccc
$
graph 选项显示分支
还可以用 --graph
选项,查看历史中什么时候出现了分支、合并。
$ git log --graph
现在我们可以更清楚明了地看到何时工作分叉、又何时归并。
reverse 选项逆向现实 Log
可以用 --reverse
参数来逆向显示所有日志。
$ git log --reverse --oneline
3b58100 第一次版本提交
3e92c19 add test.txt
c1501a2 removed test.txt、add runoob.php
7774248 (change_site) changed the runoob.php
c68142b 修改代码
d5e9fc2 (HEAD -> master) Merge branch 'change_site'
$
查找指定用户
如果只想查找指定用户的提交日志可以使用命令:git log --author
$ git log --author=Linus --oneline -5
81b50f3 Move 'builtin-*' into a 'builtin/' subdirectory
3bb7256 make "index-pack" a built-in
377d027 make "git pack-redundant" a built-in
b532581 make "git unpack-file" a built-in
112dd51 make "mktag" a built-in
$
隐藏合并提交
有时查日志不想看合并的提交,可以使用 --no-merges
选项以隐藏合并提交
查找指定日期
如果要指定日期,可以执行几个选项:--since 和 --before,也可以用 --until 和 --after。
如下,要看 Git 项目中三周前且在四月十八日之后的所有提交,还用了 --no-merges
选项以隐藏合并提交
$ git log --oneline --before={3.weeks.ago} --after={2021-04-18} --no-merges
blame 显示指定文件修改记录
如果要查看指定文件的修改记录可以使用 git blame 命令,格式如下:
$ git blame <file>
git blame 命令是以列表形式显示修改记录(以行),如下实例:
git blame README.md
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 1) # About
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 2)
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 3) This wiki page is synced from my blog posts.
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 4)
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 5) ## Website
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 6)
^e0fcd4e (alsritter 2022-02-19 15:18:43 +0800 7) This website is built using Docusaurus 2, a modern static website generator.
文件比较
git diff apple.txt
# 但是如果提交到缓存区则无法比较
# 这时可以使用指针指向本地库来进行比较
git diff HEAD apple.txt
# 同理可以指向历史版本
git diff [历史记录] apple.txt
# 如果不带文件名则是比较多个文件
git diff